home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import java.util.Hashtable;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
-
- public class CastExpression extends BinaryExpression {
- public CastExpression(int var1, Expression var2, Expression var3) {
- super(34, var1, var2.type, var2, var3);
- }
-
- public long checkValue(Environment var1, Context var2, long var3, Hashtable var5) {
- super.type = super.left.toType(var1, var2);
- var3 = super.right.checkValue(var1, var2, var3, var5);
- if (!super.type.isType(13) && !super.right.type.isType(13)) {
- if (super.type.equals(super.right.type)) {
- return var3;
- } else {
- try {
- if (var1.explicitCast(super.right.type, super.type)) {
- super.right = new ConvertExpression(super.where, super.type, super.right);
- return var3;
- }
- } catch (ClassNotFound var7) {
- var1.error(super.where, "class.not.found", var7.name, Constants.opNames[super.op]);
- }
-
- var1.error(super.where, "invalid.cast", super.right.type, super.type);
- return var3;
- }
- } else {
- return var3;
- }
- }
-
- public Expression inline(Environment var1, Context var2) {
- return super.right.inline(var1, var2);
- }
-
- public Expression inlineValue(Environment var1, Context var2) {
- return super.right.inlineValue(var1, var2);
- }
-
- public void print(PrintStream var1) {
- var1.print("(" + Constants.opNames[super.op] + " ");
- if (super.type.isType(13)) {
- super.left.print(var1);
- } else {
- var1.print(super.type);
- }
-
- var1.print(" ");
- super.right.print(var1);
- var1.print(")");
- }
- }
-